package tree;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author le
 */
public class ConstructStringFromBinaryTree
{
    public static void main(String[] args)
    {

    }

    public String tree2Str(TreeNode treeNode){
        if (treeNode == null){
            return "";
        }
        // 判断这个树是否只有一个结点
        if (treeNode.left == null && treeNode.right == null){
            return treeNode.val+"";
        }
        // 如果右子树为空 只需要加左子树的括号
        if (treeNode.right == null){
            return treeNode.val + "("+tree2Str(treeNode.left)+")";
        }
        // 右子树不为空时
        return treeNode.val + "("+tree2Str(treeNode.left)+")("+tree2Str(treeNode.right)+")";

    }



    /**
     * 广搜的思想
     * @param t
     * @return
     */
    public String treeStr(TreeNode t) {
        Queue<TreeNode> queue = new LinkedList<>();
        if (t != null){
            queue.add(t);
        }

        while(!queue.isEmpty()){
            for (int i = queue.size();i > 0;i--){
                TreeNode temp = queue.poll();
                System.out.println(temp.val);
                if (temp.left != null){
                    queue.add(temp.left);
                }
                if (temp.right != null){
                    queue.add(temp.right);
                }
            }
        }

        return "";
    }
}
